"""
日志工具模块
"""
import os
import logging
from logging.handlers import RotatingFileHandler
from datetime import datetime


class Logger:
    """日志记录器"""
    
    def __init__(self, log_dir: str = 'logs', log_level: int = logging.INFO):
        """
        初始化日志记录器
        
        Args:
            log_dir: 日志文件目录
            log_level: 日志级别
        """
        self.log_dir = log_dir
        self.log_level = log_level
        self.logger = None
        self._setup_logger()
    
    def _setup_logger(self):
        """配置日志记录器"""
        # 确保日志目录存在
        if not os.path.exists(self.log_dir):
            os.makedirs(self.log_dir)
        
        # 创建日志文件名（带时间戳）
        timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
        log_file = os.path.join(self.log_dir, f'crash_parser_{timestamp}.log')
        
        # 创建日志记录器
        logger = logging.getLogger('crash_parser')
        logger.setLevel(self.log_level)
        
        # 添加控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(self.log_level)
        console_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        console_handler.setFormatter(console_format)
        logger.addHandler(console_handler)
        
        # 添加文件处理器
        file_handler = RotatingFileHandler(
            log_file,
            maxBytes=10 * 1024 * 1024,  # 10 MB
            backupCount=5
        )
        file_handler.setLevel(self.log_level)
        file_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(file_format)
        logger.addHandler(file_handler)
        
        self.logger = logger
    
    def debug(self, message: str):
        """记录调试信息"""
        self.logger.debug(message)
    
    def info(self, message: str):
        """记录一般信息"""
        self.logger.info(message)
    
    def warning(self, message: str):
        """记录警告信息"""
        self.logger.warning(message)
    
    def error(self, message: str):
        """记录错误信息"""
        self.logger.error(message)
    
    def critical(self, message: str):
        """记录严重错误信息"""
        self.logger.critical(message)
    
    def get_log_file_path(self) -> str:
        """获取当前日志文件路径"""
        for handler in self.logger.handlers:
            if isinstance(handler, RotatingFileHandler):
                return handler.baseFilename
        return ""


# 创建全局单例日志记录器
global_logger = Logger() 